From 64753532ba0faaa526a518320d7b90a527160ff1 Mon Sep 17 00:00:00 2001 From: William Hua Date: Mon, 13 Mar 2017 03:36:30 -0400 Subject: [PATCH] mir: set placement for menu-type windows --- gdk/mir/gdkmirwindowimpl.c | 39 +++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c index 0c737e3d6f..0a4008c891 100644 --- a/gdk/mir/gdkmirwindowimpl.c +++ b/gdk/mir/gdkmirwindowimpl.c @@ -427,6 +427,7 @@ create_spec (GdkWindow *window, { MirWindowSpec *spec = NULL; GdkWindow *parent; + MirRectangle rect; spec = create_window_type_spec (impl->display, impl->transient_for, @@ -468,6 +469,41 @@ create_spec (GdkWindow *window, impl->rect_anchor_dx, impl->rect_anchor_dy); } + else + { + switch (impl->type_hint) + { + case GDK_WINDOW_TYPE_HINT_MENU: + case GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU: + case GDK_WINDOW_TYPE_HINT_POPUP_MENU: + case GDK_WINDOW_TYPE_HINT_TOOLBAR: + case GDK_WINDOW_TYPE_HINT_COMBO: + case GDK_WINDOW_TYPE_HINT_DND: + case GDK_WINDOW_TYPE_HINT_TOOLTIP: + case GDK_WINDOW_TYPE_HINT_NOTIFICATION: + rect.left = impl->transient_x; + rect.top = impl->transient_y; + rect.width = 1; + rect.height = 1; + + mir_window_spec_set_placement (spec, + &rect, + mir_placement_gravity_southeast, + mir_placement_gravity_northwest, + (mir_placement_hints_flip_x | + mir_placement_hints_flip_y | + mir_placement_hints_slide_x | + mir_placement_hints_slide_y | + mir_placement_hints_resize_x | + mir_placement_hints_resize_y), + -window->shadow_left, + -window->shadow_top); + + break; + default: + break; + } + } return spec; } @@ -1128,7 +1164,8 @@ _gdk_mir_window_set_final_rect (GdkWindow *window, gint unflipped_offset; gint flipped_offset; - g_return_if_fail (impl->has_rect); + if (!impl->has_rect) + return; best_rect = get_unflipped_rect (&impl->rect, window->width, -- 2.30.2